Modern computer systems, including mobile electronic devices within or without a wireless network environment, typically employ a highly evolved operating system (OS) to execute software to accomplish computing tasks. Frequently, programmers work within standardized runtime environments or execution environments layered over an OS to develop an application for an end-user of a device. For example, many modern smartphones employ a highly evolved OS (e.g., MICROSOFT WINDOWS MOBILE 6.5, PALM OS, GOOGLE ANDROID, APPLE IPHONE OS 4.0, SYMBIAN OS, etc.) to provide much of the functionality of the device. Further, for example, applications are frequently written in well-characterized, and often competing, languages (e.g., SUN/ORACLE JAVA, ADOBE FLASH, WEBKIT, etc.) that execute in a “virtual machine” type environment on various OSs to allow more uniformity of results for a particular application despite the particular flavor of OS the application is running on top of. For example, a JAVA based calculator program can appear similar on an ANDROID based phone and on a WINDOWS MOBILE 7 (WM7) based phone, where both the ANDROID and WM7 phone support JAVA.
The use of applications in computing environments is greatly assisted by the use of runtime environment (RTE) programming silos (e.g., JAVA, FLASH, WEBKIT, etc.). The term “silo” is used herein to represents the paradigm that a program employing a specific RTE (for example, JAVA) is generally exclusively limited to functionality supported in that same RTE (i.e., JAVA), and would not be able to access functionality from a different RTE (for example, FLASH). Thus the exemplary program running JAVA code can be considered to be effectively relegated to, or “siloed” in, a JAVA RTE silo. These RTE silos allow programmers to learn and employ specific programming languages that are, at least in theory, supported across a plurality of OS. Thus, rather than demanding that each OS produce a similar rich set of functionality for the myriad of applications that could be made, the task is shifted to the RTE developers. As such, OS developers can focus on creating improved device functionality, RTE developers can focus on leveraging the resulting improved OS to provide improved programmatic functionality, and software application developers can focus on learning a RTE language to leverage the improved programmatic functionality to, in turn, produce improved applications within the particular RTE. Moreover, because a RTE runs similarly across different OS environments, the software developer need only learn and write in a small number of RTE languages to be an effective software developer for a large number of devices. It is worth noting that this specialization of labor is not exclusive to programmers that wish to develop software that is OS platform-specific (e.g., writing a program that directly interacts with an OS, rather than executing in a specific RTE silo on top of some OS).
One facet of specialized RTE silos is that the RTE developers have become associated with, or possibly had market success because of, superior performance in a particular aspect of RTE programmatic functionality. For example, ADOBE FLASH is highly regarded for visual effects the FLASH RTE can make available and easily accessible to the software developer. Similarly, JAVA is much appreciated by software developers, at least in part, because of the ease of programming data structures and robust computation functionality. Where competing developers gained market share by developing specific strengths over their competition, they were market-encouraged to metaphorically build the walls of the silos higher and higher to defeat the competition by drawing a sufficiently large base of programmers into only their RTE product to gain access to the desirable features not offered by the competing RTE products.
A second facet of specialized RTE silos is that the silos are typically mutually exclusive, especially where the RTEs are competitive technologies. As previously stated, to gain market share, RTE developers have historically resorted to development that more rigorously forces exclusive use of a single RTE for a developed software application. As such, software application developers often are highly invested in a single RTE technology to the exclusion of other RTE technologies. This ‘brand loyalty’ and robust silo business environment can be limiting to the quality of software products made available to users. For example, a JAVA programmer may opt not to use a particular FLASH feature in an application because they prefer to do the balance of the programming in JAVA. Thus, the exclusivity of the siloed RTEs, for example, can reduce the use of the FLASH feature even where said feature may be more desirable to an end-user.
In mobile networks in particular, user equipments (UEs) can run a highly tailored and evolved operating system to deliver a particular user experience (e.g., APPLE IPHONE OS, WINDOWS MOBILE OS, etc.), more so because the UE is often relatively inexpensive and frequently upgraded by end-users. For example, the IPHONE OS is currently experiencing major version upgrades on about a 12-month cycle (IPHONE OS v1.0 June 2007→v2.0 July 2008→v3.0 June 2009→v4.0 June 2010 (expected)). Further, the user experience can improve by employing a plurality of RTEs to give the user the best features of each RTE. However, the siloed nature of RTEs and increasingly the exclusivity of specialized OS can result in a lack of support for entire RTE silos on a particular UE (e.g., the IPHONE does not support FLASH on the IPHONE OS v1.0 through v4.0). As such, a mobile carrier can improve the user experience by providing an environment that facilitates access to functionality in different RTE silos and across a plurality of OSs.